//引入express模块
const express=require('express')
//引入连接池模块
const pool=require('../pool.js')
//console.log(pool)
//创建路由器对象
const r=express.Router()
//1.用户注册接口(post /reg)
//接口地址：http://127.0.0.1:3000/v1/users/reg
//请求方式：post
r.post('/reg',(req,res,next)=>{
	//获取post传递的参数
	var obj=req.body
	console.log(obj)
	//验证
	//用户名不能为空
	if(!obj.uname){//obj.uname===''
		//响应的同时，阻止往后执行
		return res.send({code:401,msg:'uname不能为空'})
	}
	//密码不能为空
	if(!obj.upwd){
		return res.send({code:402,msg:'upwd不能为空'})
	}
	//验证手机格式:使用正则表达式
	if( !/^1[3-9][0-9]{9}$/.test(obj.phone) ){
		return res.send({code:403,msg:'手机格式错误'})
	}
	//执行SQL命令，将数据插入到数据库
	pool.query('insert into xz_user set ?',[obj],(err,r)=>{
		if(err){
			//如果SQL中出现错误，交给下一个错误处理中间件，阻止往后执行
			return next(err)
		}
		console.log(r)
		res.send({code:200,msg:'注册成功'})
	})
})
//2.用户登录接口(post /login)
//接口地址：http://127.0.0.1:3000/v1/users/login
//请求方式：post
r.post('/login',(req,res,next)=>{
	//1.获取post传递的参数             
	var obj=req.body
	console.log(obj)
	//2.执行SQL命令，到数据库中查询是否存在用户名和密码同时匹配的数据
	pool.query('select * from xz_user where uname=? and upwd=?',[obj.uname,obj.upwd],(err,r)=>{
		if(err){
			//如果SQL命令存在问题，交给下一个错误中间件
			return next(err)
		}
		console.log(r)
		//结果是数组，如果是空数组，说明登录失败，否则登录成功
		if(r.length===0){
			res.send({code:501,msg:'登录失败'})
		}else{
			res.send({code:200,msg:'登录成功'})
		}		
	})
})
//3.删除用户接口(delete /编号)
//接口地址：http://127.0.0.1:3000/v1/users/5
//请求方式：delete
r.delete('/:uid',(req,res,next)=>{
	//获取params传递的参数
	var obj=req.params
	console.log(obj)
	//执行SQL命令，删除编号对应的用户
	pool.query('delete from xz_user where uid=?',[obj.uid],(err,r)=>{
		if(err){
			return next(err)
		}
		console.log(r)
		//结果是对象，如果对象下的affectedRows为0说明删除失败，否则删除成功
		if(r.affectedRows===0){
			res.send({code:501,msg:'删除失败'})
		}else{
			res.send({code:200,msg:'删除成功'})
		}
	})
})
//4.用户列表接口(get /list)
//接口地址：http://127.0.0.1:3000/v1/users/list
//请求方式：get
r.get('/list',(req,res,next)=>{
	//获取get传递的参数
	var obj=req.query
	console.log(obj)
	//如果当前页码为空，设置默认为1
	if(!obj.pno){
		obj.pno=1
	}
	//如果每页数据量为空，设置默认为5
	if(!obj.count){
		obj.count=5
	}
	console.log(obj)
	//计算每页开始查询的值，隐式转换为数值
	var start=(obj.pno-1)*obj.count
	//将每页的数据量转为数值
	var size=Number(obj.count)
	//执行SQL命令
	pool.query('select * from xz_user limit ?,?',[start,size],(err,r)=>{
		if(err){
			return next(err)
		}
		console.log(r)
		//查询的结果是数组，把查询的结果响应到前端
		res.send({code:200,msg:'用户列表',data:r})
	})
})



//暴露路由器对象
module.exports=r